package cn.fxyz.base;

import java.io.Serializable;
import java.util.List;


public interface BaseDao<T> {
	
	/**
	 * 查询数据库表的所有记录
	 * @return
	 */
	public List<T> selectAll();

	/**
	 * 通过id查询数据库某条信息
	 * @param staff
	 * @return
	 */
	public T selectById(Serializable id);
	
	/**
	 * 修改数据库信息
	 * @param staff
	 * @return
	 */
	public void update(T t);
	
	/**
	 * 插入或修改数据库
	 * @param t
	 */
	public void insertOrUpdate(T t);
	
	/**
	 * 通过条件查询数据库
	 * @param hql 条件
	 * @param params 参数
	 * @return
	 */
	public List<T> selectAll(String hql, Object[] params);
	
	/**
	 * 向数据库表插入一条记录
	 * @param t
	 */
	public void insert(T t);
	
	/**
	 * 删除数据库的一条记录
	 * @param t
	 */
	public void delete(T t);
	
	/**
	 * 通过条件获取数据库的记录数
	 * @param hql 条件
	 * @param params 参数
	 * @return
	 */
	public int getTotalRecord(String hql, Object[] params);
	
	/**
	 * 条件 + 分页查询数据库的记录
	 * @param hql 条件
	 * @param params 参数
	 * @param startIndex 开始索引
	 * @param pageSize 页面显示的记录数
	 * @return
	 */
	public List<T> selectAll(String hql, Object[] params, int startIndex,
			int pageSize);
}
